#include<STC15F2K60S2.H>

#define uchar unsigned char 
#define uint unsigned int	
	
uchar flag,num;

unsigned char txbuffer1[] = "IAP15F2 USART TEST PROGRAM\r\n";//Ҫʲôٱд
unsigned char enter[] = {"\r\n"};                            //Ҫʲôٱд

void delayms(int ms);
void allinit();
void keyscan();

void UartInit(void);
//Էַĳ
void uart_tx(unsigned char *p,unsigned char length);//һд
void send(unsigned char *p);                        //ڶд

void main()
{
	UartInit();
	
	EA=1;
	ES=1;
	
	allinit();
	while(1)
	{
		keyscan();
	}
}


void ser() interrupt 4   //ж   //Է
{
	RI=0;
	num=SBUF;              
	if(num=='$')           //Էַ'$',Ƭִĳ
	{
		P2=0X80; P0=0X55;
	}
}

void uart_tx(unsigned char *p,unsigned char length)
{
	unsigned char i;
	for(i=0;i<length;i++)
	{
		SBUF = *(p+i);
		while(TI == 0);
		TI = 0;
	}
}

void send(unsigned char *p)
{
	unsigned char index=0;
	do
	{
		SBUF=p[index++];
		while(TI == 0);
		TI = 0;
	}
	while(p[index]!=0);
}

void UartInit(void)		//9600bps@11.0592MHz
{
	SCON = 0x50;		//8λ,ɱ䲨
	AUXR |= 0x40;		//ʱ1ʱΪFosc,1T//0100 0000
	AUXR &= 0xFE;		//1ѡʱ1Ϊʷ//111 1110
	TMOD &= 0x0F;		//趨ʱ1Ϊ16λԶװʽ
	TL1 = 0xE0;		//趨ʱֵ
	TH1 = 0xFE;		//趨ʱֵ
	ET1 = 0;		//ֹʱ1ж
	TR1 = 1;		//ʱ1
}


void keyscan()
{
	if(P32==0)
	{
		delayms(5);
		if(P32==0)
		{
			uart_tx(enter,4); 
		}
		while(!P32);
	}
	
	else if(P33==0)
	{
		delayms(5);
		if(P33==0)
		{
			send(txbuffer1);
		}
		while(!P33);
	}
}

void delayms(int ms)
{
	int i,j;
	for(i=ms;i>0;i--)
		for(j=845;j>0;j--);
}

void allinit()
{
	P2=0XA0;
	P0=0X00;//رշ̵
	
	P2=0X80;
	P0=0XFF;//رLED
	
	P2=0XC0;
	P0=0XFF;//ѡ
	P2=0XFF;
	P0=0XFF;//ر
}